Computing systems generally include peripheral devices. A peripheral device is a device that can extend, adapt, and/or modify the functionality of the computing system. Peripheral devices may be connected to a computing system internally or externally, and typically communicate with a computing system through one or more busses. The manner in which data is transferred on a bus is typically defined by a bus protocol. Examples of bus protocols include the Peripheral Component Interconnect (PCI) family of bus protocols (e.g., PCI, PCI-eXtended (PCI-X), PCI Express (PCIe), PCI derivatives such as Accelerated Graphics Port (AGP), etc.), among others.
A computing system can include a host device in communication with a peripheral device. Processes, such as virtual machines, executing on the host device may use the resources provided by the peripheral device. For example, the processes can send transactions to the peripheral device, for the peripheral device to process. The transactions can involve, for example, storage device accesses, network packets, computations, or some other functionality provided by the peripheral device.